﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Criterion;
using NHibernate.Transform;

namespace Domain.Repositorio
{
    public class EstadoRepository : Repository<Domain.Entidades.Estado>
    {
        public EstadoRepository ()
        {
            CamposDescripcion = "Nombre";
            CamposOrden = "Orden";
        }

        public IList<Entidades.Estado> EstadosDeUnaEntidad(Entidades.Entidad entity) 
        {
            ICriteria criteria = Conexion.GetSession.CreateCriteria(typeof(Entidades.Estado))
                                .Add(Restrictions.Eq("Entidad", entity))
                                .AddOrder(Order.Asc(CamposOrden));
            return criteria.List<Entidades.Estado>() as List<Entidades.Estado>;
        }

        public IList<Entidades.Estado> EstadosDeUnaEntidad(String entity)
        {
            ICriteria criteria = Conexion.GetSession.CreateCriteria(typeof(Entidades.Estado))
                                .CreateAlias("Entidad", "entitys")
                                .Add(Restrictions.Like ("entitys.Nombre", entity, MatchMode.Exact))
                                .SetResultTransformer(new DistinctRootEntityResultTransformer());  
            return criteria.List<Entidades.Estado>() as List<Entidades.Estado>;
        }
    }
}
